package br.com.jbssistemas.loterica.managedbeans;

import br.com.jbssistemas.loterica.daos.ClienteDAO;
import br.com.jbssistemas.loterica.daos.OperacaoNegocialDAO;
import br.com.jbssistemas.loterica.daos.TipoOperacaoNegocialDAO;
import br.com.jbssistemas.loterica.entidades.Cliente;
import br.com.jbssistemas.loterica.entidades.OperacaoNegocial;
import br.com.jbssistemas.loterica.entidades.TipoOperacaoNegocial;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
import javax.inject.Named;
import javax.faces.view.ViewScoped;

/**
 *
 * @author daniel
 *
 */
@Named(value = "operacaoNegocialBean")
@ViewScoped
public class OperacaoNegocialBean extends AbstractBean<OperacaoNegocial> {

    private List<SelectItem> tiposOperacoesNegociais;

    private List<Cliente> clientes;

    private Double totalComissao;

    public OperacaoNegocialBean() {
        super(OperacaoNegocial.class, new OperacaoNegocialDAO());
    }

    public double getValorTotalComissao() {

        List<OperacaoNegocial> operacoesNegociais = (List<OperacaoNegocial>) getItems();

        totalComissao = 0.0;

        for (OperacaoNegocial o : operacoesNegociais) {

            totalComissao += o.getValorComissao();

        }

        return totalComissao;

    }

    public List<SelectItem> getTiposOperacoesNegociais() {

        if (tiposOperacoesNegociais == null) {

            tiposOperacoesNegociais = new ArrayList<SelectItem>();

            for (TipoOperacaoNegocial t : new TipoOperacaoNegocialDAO().findAll()) {

                tiposOperacoesNegociais.add(new SelectItem(t, t.getDescricao()));

            }

        }

        return tiposOperacoesNegociais;

    }

    public List<Cliente> completeClientes(String query) {

        if (clientes == null) {

            clientes = new ClienteDAO().findAll();

        }

        List<Cliente> sugestoes = new ArrayList<Cliente>();

        for (Cliente c : clientes) {

            if (c.getNome().toUpperCase()
                    .contains(query.toUpperCase())) {

                sugestoes.add(c);

            }

        }

        return sugestoes;

    }

    public void resetClientes(){
    
        clientes = null;
        
    }
    
}
